
/*--------------------------------------------------------------------------
  
　ステート道具発動率ウィンドウ表示

■概要
　本プラグインを入れると、敵味方がステート付与の道具・杖を使用した場合に
　発動率を示したウィンドウを表示した状態でステート付与を行うようになります。
　（ステートのマップアニメが表示されている間、ウィンドウが表示されます）


　敵が使ってきたステートの命中率が何％なのかが判るようにしたい場合にでも

■カスタマイズ
　　１．ウィンドウを簡易戦闘風（ウィンドウ2つ）に表示させたい
　　　　→設定にある「var isWindowSingle = true;」のtrueをfalseにしてください。

■注意事項
　このプラグインを入れる場合
　ステートの設定でマップアニメを必ず設定しておいてください。
　（マップアニメが表示されている間ウィンドウを表示している為、
　　マップアニメ無しだとステートが命中した場合ウィンドウが一瞬で消えます）


修正内容
19/10/26　新規作成
19/10/27　ウィンドウ2つでの表示設定を追加


■対応バージョン
　SRPG Studio Version:1.206


■規約
・利用はSRPG Studioを使ったゲームに限ります。
・商用・非商用問いません。フリーです。
・加工等、問題ありません。どんどん改造してください。
・クレジット明記無し　OK
・再配布、転載　OK
・wiki掲載　OK
・SRPG Studio利用規約は遵守してください。
  
--------------------------------------------------------------------------*/


(function() {

//---------------------------------------------------------------
// 設定
//---------------------------------------------------------------
var isWindowSingle = true;			// ウィンドウ１つで表示するか（true:1つで表示 false:2つで表示）




//---------------------------------------------------------------
// プログラム関連
//---------------------------------------------------------------


//---------------------------------------
// StateItemUseクラス
//---------------------------------------
var alias01 = StateItemUse.enterMainUseCycle;
StateItemUse.enterMainUseCycle= function(itemUseParent) {
		var itemTargetInfo = itemUseParent.getItemTargetInfo();
		var info = itemTargetInfo.item.getStateInfo();
		
		// ウィンドウ1つの場合
		if( isWindowSingle === true ) {
			// PosStateDisplayWindowをセット
			this._posItemWindow = createWindowObject(PosStateDisplayWindow, this);
			this._posItemWindow.setPosTarget(itemTargetInfo.unit, itemTargetInfo.item, itemTargetInfo.targetUnit, null, true);
			// 描画時の位置計算用にunitとtargetUnitを保持しておく
			this._unit = itemTargetInfo.unit;
			this._targetUnit = itemTargetInfo.targetUnit;
		}
		// ウィンドウ2つの場合
		else {
			this._posMenu = createObject(PosMenu);
			this._posMenu.createPosMenuWindow(itemTargetInfo.unit, itemTargetInfo.item, PosMenuType.Item);
			this._posMenu.changePosTarget(itemTargetInfo.targetUnit);
		}
		
		// 従来処理を実施
		return alias01.call(this, itemUseParent);
}


StateItemUse.drawMainUseCycle= function() {
		var x, y;
		
		// ウィンドウ1つの場合
		if( isWindowSingle === true ) {
			//_ウィンドウ描画に必要なデータが無い場合処理終了
			if( this._posItemWindow == null || this._unit == null || this._targetUnit == null ) {
				return;
			}
			
			//_ウィンドウ描画位置算出
			x = LayoutControl.getCenterX(-1, this._posItemWindow.getWindowWidth());
			y = Miscellaneous.getDyamicWindowY(this._unit, this._targetUnit, this._posItemWindow.getWindowHeight());
			
			//_ウィンドウ描画
			this._posItemWindow.drawWindow(x, y);
		}
		// ウィンドウ2つの場合
		else {
			this._posMenu.drawWindowManager();
		}
}




//---------------------------------------
// PosStateDisplayWindowクラス(PosItemWindowの派生)
//---------------------------------------
var PosStateDisplayWindow = defineObject(PosItemWindow,
{
	setPosTarget: function(unit, item, targetUnit, targetItem, isSrc) {
		if (item !== null && !item.isWeapon()) {
			this._obj = ItemPackageControl.getItemPotencyObject(item);
			this._obj.setPosMenuData(unit, item, targetUnit);
		}
		
		// PosItemWindowはunit、ステート杖、isSrcだが
		// PosStateDisplayWindowではtargetUnit、ステート杖、isSrcをセットしている
		this.setPosInfo(targetUnit, item, isSrc);
	}
}
);


})();